// Copyright © SixtyFPS GmbH <info@slint-ui.com>
// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-commercial


export X := Rectangle {
    forward-focus: someRect;
//                 ^error{element is not focusable}

    callback trigger_focus_change();
    trigger_focus_change => {
        someRect.focus();
//      ^error{focus\(\) can only be called on focusable elements}
    }

    indirect_focus_chain_rect := Rectangle {
       forward-focus: someRect;
//                    ^error{element is not focusable}
    }

    callback trigger_focus_change_2();
    trigger_focus_change_2 => {
        indirect_focus_chain_rect.focus();
//      ^error{focus\(\) can only be called on focusable elements}
    }

    someRect := Rectangle {}

    someFocusScope := FocusScope {}
    callback activate_focus_scope();
    activate_focus_scope => {
        someFocusScope.focus(); // OK!
    }
}



export Y := FocusScope {
    forward-focus: self;
//                 ^error{forward-focus can't refer to itself}
    x:= X { }
    key-pressed => {
        r0.focus();
        x.focus();
//      ^error{focus\(\) can only be called on focusable elements}
        accept
    }

    r1:= Rectangle {
        forward-focus: r2;
    }
    r0:= Rectangle {
        forward-focus: r1;
    }
    r2 := Rectangle {
        forward-focus: r3;
    }
    r3 := Rectangle {
        forward-focus: r1;
//                     ^error{forward-focus loop}
    }
}
